package varredor.model;

import java.util.ArrayList;
import java.util.List;
import varredor.concorrencia.Semaforo;

public class Cenario {

	private List<ComputadorNo> computadores = new ArrayList<ComputadorNo>();

	private transient Semaforo semaforo = new Semaforo();

	public void addNo(ComputadorNo no) {
		//semaforo.DOWN();
		if (!computadores.contains(no))
			computadores.add(no);
		//semaforo.UP();
	}

	public ComputadorNo getComputadorNoLivre() {
		ComputadorNo compNo = null;
		System.out.println("INDO PEGAR O COMPUTADOR LIVRE");
		//semaforo.DOWN();

		for (ComputadorNo computadorNo : computadores) {
			if (!computadorNo.isVerificado() && !computadorNo.isEmVerificacao()) {
				compNo = computadorNo;
				break;
			}
		}

		if (compNo != null)
			compNo.setEmVerificacao(true);

		//semaforo.UP();
		System.out.println("RETORNANDO O COMPUTADOR LIVRE " + compNo);
		return compNo;
	}

	public boolean podeEncerrar() {

		//semaforo.DOWN();

		for (ComputadorNo computadorNo : computadores) {
			if (!computadorNo.isVerificado()) {
				return false;
			}
		}

		//semaforo.UP();

		return true;
	}

	public List<ComputadorNo> getComputadores() {
		return computadores;
	}
}
